import type { PageParam } from '@vben/request';

import { shopRequestClient } from '#/api/shop-request';

export namespace SiteApi {
  /** 站点管理员信息 */
  export interface SiteAdmin {
    uid: number;
    username: string;
    head_img: string;
    real_name: string;
    last_ip: string;
    last_time: string;
    login_count: number;
  }

  /** 站点信息 */
  export interface Site {
    site_id: number; // 站点ID
    site_name: string; // 站点名称
    group_id: number; // 所属集团ID
    group_name: string; // 所属集团名称
    keywords: string; // 关键词
    app_type: string; // 应用类型
    logo: string; // 站点Logo
    desc: string; // 站点描述
    status: number; // 状态
    latitude: string; // 纬度
    longitude: string; // 经度
    province_id: number; // 省份ID
    city_id: number; // 城市ID
    district_id: number; // 区县ID
    address: string; // 地址
    full_address: string; // 完整地址
    phone: string; // 电话
    business_hours: string; // 营业时间
    create_time: string; // 创建时间
    expire_time: string; // 过期时间
    front_end_name: string; // 前端名称
    front_end_logo: string; // 前端Logo
    front_end_icon: string; // 前端图标
    icon: string; // 图标
    member_no: string | null; // 会员编号
    app: string[]; // 应用列表
    addons: Record<string, any>; // 插件
    initalled_addon: any; // 已安装插件
    site_domain: string; // 站点域名
    admin: SiteAdmin; // 管理员信息
    status_name: string; // 状态名称
  }

  /** 站点分页响应 */
  export interface SitePageResponse {
    current_page: number;
    per_page: number;
    total: number;
    data: Site[];
  }

  /** 站点查询参数 */
  export interface SiteQueryParams extends PageParam {
    keywords?: string; // 关键词搜索
    group_id?: number; // 集团ID
    app?: string; // 应用类型
    status?: string; // 状态
    site_domain?: string; // 站点域名
  }
}

/** 查询站点分页 */
export function getSitePage(params: SiteApi.SiteQueryParams) {
  return shopRequestClient.get<SiteApi.SitePageResponse>('/site/site', {
    params,
  });
}

/** 查询站点详情 */
export function getSite(id: number) {
  return shopRequestClient.get<SiteApi.Site>(`/site/site/${id}`);
}

/** 新增站点 */
export function createSite(data: SiteApi.Site) {
  return shopRequestClient.post('/site/site', data);
}

/** 修改站点 */
export function updateSite(data: SiteApi.Site) {
  return shopRequestClient.put('/site/site', data);
}

/** 删除站点 */
export function deleteSite(id: number) {
  return shopRequestClient.delete(`/site/site/${id}`);
}

/** 获取站点列表（用于选择器） */
export function getSiteList(params?: { group_id?: number; status?: string }) {
  return shopRequestClient.get<SiteApi.SitePageResponse>('/site/site', {
    params: {
      page: 1,
      limit: 100,
      ...params,
    },
  });
}
